悪魔のオコトバ

[Git]リモートリポジトリの全ブランチをプルする

January 13, 2021 Category: Git

git pullは現在チェックアウトしているブランチしかフェッチしない

ワガハイは仕事でプロジェクトのgitをほとんど1人で操作している(作業者が1人)のですが、頻繁にブランチを切り替えて作業しているためあっちでプッシュしてこっちでプルしてみたいな場面が多くあります。
その中で、ブランチ間をスイッチしながら作業しているとプルして最新のソースで作業していたつもりなのにし損ねていてて混乱することがあります。

なので、もういっそgit pullgit pull --allにしてしまいましょう。

使用するコマンド

git pull —all

git pull --allはローカルでトラッキングしているブランチをすべてプルしてくれるそうです。

トラッキングしていないブランチもすべてプル

上記の通り、git pull --allはトラッキングしているブランチしかプルしてくれません。トラッキングしていないブランチもすべてプルしたい場合はこちらを実行するようです。

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git pull --all

※参考にしたStack Overflowの回答者さんはgit pull --allの前に念の為git fetch --allも実行しているそうです。
git pullにはgit fetchも含まれているはずなのでどういう場合の念の為なのかはよくわかりませんが。

エイリアスを作成

今回はgit pull --allだけでいいので、こちらをgit pullに設定します。

設定ファイル

影響範囲 設定ファイル
システム全体 /etc/gitconfig
ユーザー ~/.gitconfig
リポジトリ リポジトリのルートディレクトリ/.git/config

設定方法

[alias]
    pull = pull --all

ちなみに/etc/gitconfig/

git config --global --edit

で編集可能。

参考

How to fetch all Git branches - Stack Overflow
【git】aliasの設定方法 - Qiita


Written by アクマちゃん 2013年くらいからたぶんサーバーサイドプログラマーです。好きなものは謎解き・ボードゲーム・音楽・プログラミング。住んでいるところが海に近いのでいつかサーフィンをやってみたい。 Twitter

© 2021, Akumachan